import { AuthMenu } from "./auth";
import { ResBase } from "./common/resPonse";

export enum LoginType { //登录类型
  ACC = "account", //账号
  MOB = "mobile", //手机
  MEC = "wechat" //微信
}

export enum RoleType { //角色类型
  SYS = "system", // 系统角色
  USER = "user" // 普通用户
}

export interface LoginTodo {
  //登录传参
  /**
   * 用户登录类型:
   * account– 帐号密码登录
   * mobile– 手机号码登录
   * wechat– 微信账号登录
   */
  loginType: LoginType;
  /**
   * 帐号密码登录参数，当用户登录类型为account时，此参数有效
   */
  accountLoginParam?: {
    /**
     * 登录帐号
     */
    loginname: string;
    /**
     * 登录密码
     */
    password: string;
    /**
     * 认证码，防止频繁登录
     */
    authcode?: string;
  };
  /**
   * 用户手机号码登录参数，当用户登录类型为mobile时，此参数有效
   */
  mobileLoginParams?: {
    /**
     * 手机号码
     */
    mobilePhone: string;
    /**
     * 登录密码
     */
    password: string;
    /**
     * 短信验证码
     */
    smsAuthCode: string;
  };
  /**
   * 微信登录参数，当用户登录类型为wechat时，此参数有效
   */
  wechatLoginParams?: any;
}

export class UserAuthInfo {
  // 用户权限信息
 
  /**
   * 用户帐号对应的用户ID
   */
  userId: string = "";
  /**
   * 用户昵称
   */
  nickName: string = "";
  /**
   * 角色类型
   */
  roleType: RoleType | string = RoleType.USER;
  /**
   * 登录鉴权ID
   */
  sessionId: string = "";
  /**
   * 用户角色的前端授权访问信息对象
   */
  roleFrontAuthInfo: AuthMenu = new AuthMenu();
}

export class LoginRes extends UserAuthInfo implements ResBase{
  /**
   * 值为0，操作成功
   */
  optResult: number = 0;
  /**
   * 操作失败说明
   */
  msg?: string;
  /**
   * 账号密码输入错误剩余次数
   */
  residualTimes?: number;
  
}